Hace unos días, en la entrada Mal tutorial de Backbone.js en NetTuts+ me quejaba de la mala calidad del tutorial Build a Contacts manager using using Backbone.js... Pese a que al final de la entrada decía que mis conocimientos sobre Backbone.js no eran suficientes para arreglar el tutorial, decidí intentarlo.
Este fin de semana le he dedicado muuucho tiempo al tutorial de NetTuts+. Al final, he desistido. Curiosamente, a base de dedicarle tiempo, he conseguido solucionar algunos de los problemas de la aplicación ContactManager (al menos hasta la tercera parte del tutorial, en la que se añaden y eliminan contactos en la aplicación). Incluso he empezado a redactar el tutorial; la base del mismo sería el tutorial de NetTuts+, pero contruyendo una aplicación diferente y con comentarios sobre cómo y porqué se hacen las cosas como se hacen...
Desde el principio tenía claro que no sólo quería traducir y comentar el tutorial de NetTuts+, adaptándolo a mi aplicación; también quería simplificar el aprendizaje traduciendo los nombres de todas aquellas propiedades de los Modelos, Colecciones y Vistas que no fueran propias de Backbone/Underscore...
Sin embargo, como mi conocimiento de Backbone/Underscore no es demasiado bueno --como había comentado-, mi versión simplificada y castellanizada del gestor de contactos, no funcionaba.
Después de solucionar algunos problemas con la aplicación, conseguí que no generara ningún error: pero tampoco hacía lo que debía hacer... Así que al final, de nuevo, desistí; al fin y al cabo, la aplicación original ya me había dado muchos dolores de cabeza.
Cambié de aplicación e intenté aprender the hard way: revisando el código de LocalToDos. Esta aplicación se recomienda en la web de Backbonejs.org ya que es sencilla y está muy bien comentada.
De nuevo, mi idea era explicar el código, comentándolo, explicando cómo funciona... Este trabajo me obligaba a entender cada trozo de código, lo que es un método de aprendizaje fantástico.
El resultado, sin embargo, ha sido el mismo.
El principal problema --además de mi conocimiento superficial de Backbone.js-- es que no resulta sencillo determinar cuándo una propiedad forma parte del framework y cuándo es creada por el autor de la aplicación.
Por ejemplo, en la aplicación LocalToDos, tenemos una vista llamada TodoView que contiene --entre otras-- las propiedades llamadas close y clear. La primera, cierra el modo de edición y graba los cambios; la segunda, elimina la tarea y su vista. Sin embargo, una de las dos forma parte de Backbone.js, mientras que la otra es una propiedad creada por el programador.
Si acudimos a la documentación de Backbone.js, descubrimos que clear forma parte del framework, mientras que close, no. Así que si intento castellanizar la aplicación y me da por cambiar el nombre de close a cerrar, no pasa nada. Sin embargo, si cambio clear por limpiar --por ejemplo--, la función deja de funcionar, aunque no da ningún error.
El problema está en que clear lanza un evento change que no lanzaría mi función customizada limpiar. Esto implica que, aunque el código castellanizado sea correcto, la aplicación no funcionará: no se lanzará la acción que hayamos asociado al evento change de la vista TodoView (en este ejemplo). Y lo peor de todo es que tampoco se producirá ningún error.
Por supuesto, la solución está en verificar la documentación de Backbone.js y comprobar si las propiedades de las aplicaciones forman parte o no del framework... En este sentido, una pequeña crítica a la documentación de Backbone.js: ¿porqué las propiedades no están ordenadas alfabéticamente? En cualquier caso, lo más rápido para localizar una propiedad es utilizar la búsqueda en el navegador (Ctrl+F).
Resumiendo: seguiré intentando hacer el tutorial, aunque tendré que hacer algunas consultas a la documentación original...
Comentarios